{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 一、需求分析\n",
    "## 1.1\t任务描述\n",
    "\n",
    "- **kaggle入门级比赛——泰坦尼克号之灾**- [kaggle-Titanic主页](https://www.kaggle.com/c/titanic)\n",
    "- 在学习机器学习相关项目时，Titanic生存率预测项目也通常是入门练习的经典案例。Kaggle平台为我们提供了一个竞赛案例“Titanic: Machine Learning from Disaster”，在该案例中，我们将探究什么样的人在此次海难中幸存的几率更高，并通过构建预测模型来预测乘客生存率。\n",
    "- 本质是一个分类任务。目标是预测乘客能否生还以及生还的机率。\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1.2\t已具备数据描述\n",
    "**数据说明：**\n",
    "- PassengerID（ID）\n",
    "- **Survived (存活与否)    Label字段**\n",
    "- Pclass（客舱等级，较为重要）\n",
    "- Name（姓名，可提取出更多信息）\n",
    "- Sex（性别，较为重要）\n",
    "- Age（年龄，较为重要）\n",
    "- Parch（直系亲友）\n",
    "- SibSp（旁系）\n",
    "- Ticket（票编号）\n",
    "- Fare（票价）\n",
    "- Cabin（客舱编号）\n",
    "- Embarked（上船的港口编号）\n",
    "\n",
    "**数据集合：**\n",
    "- train.csv 训练数据 （891条）有Label：Survived字段\n",
    "- test.csv 测试数据 （418条）无标签字段，需要预测的"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1.3\t拟采用的机器学习方法\n",
    "- 语言：python\n",
    "- 编译器：Jupyter Notebook\n",
    "- 主要用到的三方库：numpy、pandas、matplotlib、sklearn等\n",
    "- 数据开发流程： 数据加载，数据清洗，特征工程，数据建模，模型可视化，模型预测"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 二、机器学习建模过程\n",
    "## 2.1\t数据加载\n",
    "- 使用pandas的read_csv读取训练集和测试集"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PassengerId</th>\n",
       "      <th>Survived</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Name</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Ticket</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Cabin</th>\n",
       "      <th>Embarked</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Braund, Mr. Owen Harris</td>\n",
       "      <td>male</td>\n",
       "      <td>22.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>A/5 21171</td>\n",
       "      <td>7.2500</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Cumings, Mrs. John Bradley (Florence Briggs Th...</td>\n",
       "      <td>female</td>\n",
       "      <td>38.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>PC 17599</td>\n",
       "      <td>71.2833</td>\n",
       "      <td>C85</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>Heikkinen, Miss. Laina</td>\n",
       "      <td>female</td>\n",
       "      <td>26.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>STON/O2. 3101282</td>\n",
       "      <td>7.9250</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Futrelle, Mrs. Jacques Heath (Lily May Peel)</td>\n",
       "      <td>female</td>\n",
       "      <td>35.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>113803</td>\n",
       "      <td>53.1000</td>\n",
       "      <td>C123</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Allen, Mr. William Henry</td>\n",
       "      <td>male</td>\n",
       "      <td>35.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>373450</td>\n",
       "      <td>8.0500</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   PassengerId  Survived  Pclass  \\\n",
       "0            1         0       3   \n",
       "1            2         1       1   \n",
       "2            3         1       3   \n",
       "3            4         1       1   \n",
       "4            5         0       3   \n",
       "\n",
       "                                                Name     Sex   Age  SibSp  \\\n",
       "0                            Braund, Mr. Owen Harris    male  22.0      1   \n",
       "1  Cumings, Mrs. John Bradley (Florence Briggs Th...  female  38.0      1   \n",
       "2                             Heikkinen, Miss. Laina  female  26.0      0   \n",
       "3       Futrelle, Mrs. Jacques Heath (Lily May Peel)  female  35.0      1   \n",
       "4                           Allen, Mr. William Henry    male  35.0      0   \n",
       "\n",
       "   Parch            Ticket     Fare Cabin Embarked  \n",
       "0      0         A/5 21171   7.2500   NaN        S  \n",
       "1      0          PC 17599  71.2833   C85        C  \n",
       "2      0  STON/O2. 3101282   7.9250   NaN        S  \n",
       "3      0            113803  53.1000  C123        S  \n",
       "4      0            373450   8.0500   NaN        S  "
      ]
     },
     "execution_count": 45,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import pandas as pd #数据分析\n",
    "import numpy as np #科学计算\n",
    "\n",
    "data_train = pd.read_csv(\"./data/train.csv\")\n",
    "data_test = pd.read_csv(\"./data/test.csv\")  \n",
    "\n",
    "# 查看训练集数据预览\n",
    "data_train.head(5)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- 通过数据预览，初步可以确定：\n",
    "    1. PassengerId是顺序数列，可以不加入建模\n",
    "    2. Name里面有Mr，Miss，Mrs等称谓，可以提取出来使用\n",
    "    3. Sex：需要做数字化转换\n",
    "    4. Age：缺失值\n",
    "    5. Ticket：可以不加入建模\n",
    "    6. Cabin：可以提取首字母，再转数字化\n",
    "    7. Embarked：转数字化"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 891 entries, 0 to 890\n",
      "Data columns (total 12 columns):\n",
      " #   Column       Non-Null Count  Dtype  \n",
      "---  ------       --------------  -----  \n",
      " 0   PassengerId  891 non-null    int64  \n",
      " 1   Survived     891 non-null    int64  \n",
      " 2   Pclass       891 non-null    int64  \n",
      " 3   Name         891 non-null    object \n",
      " 4   Sex          891 non-null    object \n",
      " 5   Age          714 non-null    float64\n",
      " 6   SibSp        891 non-null    int64  \n",
      " 7   Parch        891 non-null    int64  \n",
      " 8   Ticket       891 non-null    object \n",
      " 9   Fare         891 non-null    float64\n",
      " 10  Cabin        204 non-null    object \n",
      " 11  Embarked     889 non-null    object \n",
      "dtypes: float64(2), int64(5), object(5)\n",
      "memory usage: 83.7+ KB\n"
     ]
    }
   ],
   "source": [
    "# 查看训练集基本信息，缺失值情况\n",
    "data_train.info()\n",
    "# Age、Cabin、Embarked缺数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PassengerId</th>\n",
       "      <th>Survived</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Fare</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>891.000000</td>\n",
       "      <td>891.000000</td>\n",
       "      <td>891.000000</td>\n",
       "      <td>714.000000</td>\n",
       "      <td>891.000000</td>\n",
       "      <td>891.000000</td>\n",
       "      <td>891.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>446.000000</td>\n",
       "      <td>0.383838</td>\n",
       "      <td>2.308642</td>\n",
       "      <td>29.699118</td>\n",
       "      <td>0.523008</td>\n",
       "      <td>0.381594</td>\n",
       "      <td>32.204208</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>257.353842</td>\n",
       "      <td>0.486592</td>\n",
       "      <td>0.836071</td>\n",
       "      <td>14.526497</td>\n",
       "      <td>1.102743</td>\n",
       "      <td>0.806057</td>\n",
       "      <td>49.693429</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.420000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>223.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>20.125000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>7.910400</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>446.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>28.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>14.454200</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>668.500000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>38.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>31.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>891.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>80.000000</td>\n",
       "      <td>8.000000</td>\n",
       "      <td>6.000000</td>\n",
       "      <td>512.329200</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       PassengerId    Survived      Pclass         Age       SibSp  \\\n",
       "count   891.000000  891.000000  891.000000  714.000000  891.000000   \n",
       "mean    446.000000    0.383838    2.308642   29.699118    0.523008   \n",
       "std     257.353842    0.486592    0.836071   14.526497    1.102743   \n",
       "min       1.000000    0.000000    1.000000    0.420000    0.000000   \n",
       "25%     223.500000    0.000000    2.000000   20.125000    0.000000   \n",
       "50%     446.000000    0.000000    3.000000   28.000000    0.000000   \n",
       "75%     668.500000    1.000000    3.000000   38.000000    1.000000   \n",
       "max     891.000000    1.000000    3.000000   80.000000    8.000000   \n",
       "\n",
       "            Parch        Fare  \n",
       "count  891.000000  891.000000  \n",
       "mean     0.381594   32.204208  \n",
       "std      0.806057   49.693429  \n",
       "min      0.000000    0.000000  \n",
       "25%      0.000000    7.910400  \n",
       "50%      0.000000   14.454200  \n",
       "75%      0.000000   31.000000  \n",
       "max      6.000000  512.329200  "
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 查看训练数据的基本统计信息\n",
    "data_train.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 2.2\t数据探索\n",
    "- 通过图表化的方式，来具体观察一下数据之间的关系"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "# 设置中文支持\n",
    "import matplotlib as mpl\n",
    "mpl.rcParams[\"font.family\"] = \"SimHei\"   # SimHei 中文黑体\n",
    "mpl.rcParams[\"axes.unicode_minus\"]=False"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, '人数')"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 画柱状图，画出最终获救和非获救的人员数量\n",
    "# 正负样本的比例\n",
    "\n",
    "fig = plt.figure(figsize=(8,4))\n",
    "data_train.Survived.value_counts().plot(kind='bar') \n",
    "plt.title(u\"获救情况 (1为获救)\") # \n",
    "plt.ylabel(u\"人数\")  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1.0, '乘客等级分布')"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 乘客客舱等级分布\n",
    "fig = plt.figure(figsize=(8,4))\n",
    "data_train.Pclass.value_counts().plot(kind=\"bar\")\n",
    "plt.ylabel(u\"人数\")\n",
    "plt.title(u\"乘客等级分布\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1.0, '按年龄看获救分布 (1为获救)')"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 年龄因素对是否获救的影响 (1为获救)\")\n",
    "fig = plt.figure(figsize=(8,4))\n",
    "plt.scatter(data_train.Survived, data_train.Age)\n",
    "plt.ylabel(u\"年龄\")                         \n",
    "plt.grid(b=True, which='major', axis='y') \n",
    "plt.title(u\"按年龄看获救分布 (1为获救)\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x1d6623c2610>"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 用密度图来看不同等级的乘客的年龄分布\n",
    "\n",
    "fig = plt.figure(figsize=(8,4))\n",
    "data_train.Age[data_train.Pclass == 1].plot(kind='kde')   # plots a kernel desnsity estimate of the subset of the 1st class passanges's age\n",
    "data_train.Age[data_train.Pclass == 2].plot(kind='kde')\n",
    "data_train.Age[data_train.Pclass == 3].plot(kind='kde')\n",
    "plt.xlabel(u\"年龄\")# plots an axis lable\n",
    "plt.ylabel(u\"密度\") \n",
    "plt.title(u\"各等级的乘客年龄分布\")\n",
    "plt.legend((u'头等舱', u'2等舱',u'3等舱'),loc='best') # sets our legend for our graph."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 各登船口岸上船人数\n",
    "\n",
    "fig = plt.figure(figsize=(8,4))\n",
    "data_train.Embarked.value_counts().plot(kind='bar')\n",
    "plt.title(u\"各登船口岸上船人数\")\n",
    "plt.ylabel(u\"人数\")  \n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- 在图上可以看出来:\n",
    "    - 被救的人有300多，不到半数；\n",
    "    - 3等舱乘客非常多；遇难和获救的人年龄似乎跨度都很广；\n",
    "    - 3个不同的舱年龄总体趋势似乎也一致，2/3等舱乘客20岁多点的人最多，1等舱40岁左右的最多\n",
    "    - 登船港口人数按照S、C、Q递减，而且S远多于另外俩港口。\n",
    "\n",
    "- 这个时候我们可能会有一些想法了：\n",
    "    - 不同舱位/乘客等级可能和财富/地位有关系，最后获救概率可能会不一样\n",
    "    - 年龄对获救概率也一定是有影响的，毕竟前面说了，副船长还说『小孩和女士先走』呢\n",
    "    - 和登船港口是不是有关系呢？也许登船港口不同，人的出身地位不同？\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 576x288 with 0 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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XwNHRsQSSf+X9OSiyXnectLojt2AxY3KNiHpPNIQtfTp02ezjSxatIgdd9yRfv36UTHMcGlEBMuWLWPRokX079+/5Q+YmVUoqgnoDxGxJE/PJT3wo2t+3z1vd3UTZZuIiCkRURcRdb16bX4V0+uvv07Pnj1LufMHkETPnj1LfQZkZm9dUQHwPUkH5vHXPw58ntTEA2mkxIWkYW0bl221t+vOf+3atS0v1Arert/fzN7+igqAfwW+Rxr2dzbpqUWfknQ96aEU9zVT1iatX78egGHDhrFmTXpWxuGHH/7GvIYB96ZNm8akSZO4+uqrAbjooot47LHHmlijmVnxCukDiIg/kq4EeoOk4aSnDF0bESubK9sW/S5v3QxZ+B/HtbjM8uXLGTNmDJ07d2b+/PmceOKJADzzzDMcf/zxrF27lltuuYXu3bvz6quvUl9fz5o1a3jhhReYM2cO1113HQAbNmygXTvflmEGwFXvrHUNinPVNu/qWk3V7gSOiBVsvOqn2bK2pkePHtx8883su+++XHbZZVx77bV06NCBK664gssvv5yddtqJxYsX88UvfpElS5awbt06+vbty8yZM1myZAmHHnoozz33HNdccw1nn312rb+OmZVImxkK4u3sySef5KijjmLs2LF07NiRDRs28Mgjj/Ce97yHBQsWcMkll3DsscfSrVs3Vq9ezYoVK5g5cyYTJkxgyJAhfOc73/HO38yqzm0O2+i5557jtttu4+yzz6ZLly6cfPLJjBgxgvnz53PnnXdy//33s3z5cmbMmMGKFSu46aab+POf/8zAgQN58sknWbBgAQMHDqz11zCzEvIZwDYaMGAA06ZN4/zzzwdSR++8efM4/vjjeeCBB2jXrh2SGD9+PGeeeSZ77703ixYt4t5772X06NGsW7eOsWPH1vhbmFkZ+QxgGz3zzDOceuqpXH311axZs4YOHTpw2223cf755zNp0iTatWvHXXfdxaWXXsrZZ5/NqFGjOPTQQ7nnnnsYPHgwv/rVrxgwYECtv4aZlZADYBvtt99+bzTv9O/fnzvuuINu3boxfvx4HnnkEe666y5GjhzJfffdR48ePWjXrh2XX345Q4cO5eGHH2b9+vXMmDGj1l/DzEpou2oC2pLLNlubJCZOnMhTTz3FOeecw6RJk5g6dSqSuPvuu7n44osZMWIEs2bN4oorruCB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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#看看各乘客等级的获救情况\n",
    "fig = plt.figure(figsize=(8,4))\n",
    "Survived_0 = data_train.Pclass[data_train.Survived == 0].value_counts()\n",
    "Survived_1 = data_train.Pclass[data_train.Survived == 1].value_counts()\n",
    "df=pd.DataFrame({u'获救':Survived_1, u'未获救':Survived_0})\n",
    "df.plot(kind='bar', stacked=True)\n",
    "plt.title(u\"各乘客等级的获救情况\")\n",
    "plt.xlabel(u\"乘客等级\") \n",
    "plt.ylabel(u\"人数\") \n",
    "\n",
    "plt.show()\n",
    "\n",
    "# 一等仓，明显获救的比例更高，一二三等仓依次递减"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 576x288 with 0 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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wNcj4qFcn4X5M/t4RNS//yANVL8IvCxpIOmy3C9EuvLnFuBHkt6MiIfzc9qQBoTr30v9Z7MV6bMcl/f3dH69Yay95+HyvPkcYKDSPRodSVdP2WZK+f85sxZRuklqu0hdQrWsR7uI2KxuNMp9750qQmOzIqlTRPy9Yvkf+gzz2MTOsfbOZmtlHABmZiXlq4DMzErKAWBmVlIOADOzkmo1VwFtv/320bt371pXw8ysVZk9e/ZrEdGjsXWtJgB69+7NrFmzmt/QzMzeJanJO7TdBWRmVlIOADOzknIAmJmVVKsZAzAza8qqVauYP38+y5eX9ycIOnbsSK9evWjXrl3zG2cOADNr9ebPn8/WW29N7969yb8JUSoRweuvv878+fPp06dP80/I3AVkZq3e8uXL6d69eykP/gCS6N69+wa3gBwAZrZF2FwP/itXbswP0m24jXn/DgAzs01k9er0e0VDhw5lxYr0OzgHHnjgu+vqJ9+87bbbmDRpEhdccAEAX/3qV3nssceqXl+PATTl3G1rXYNinbuk1jUwK0zv8Xdv0tebd+G/NLvNokWLOP744+nQoQNz5szhmGOOAeD555/nyCOPZOXKlVx55ZV06dKFt99+mzVr1rBixQpeeeUVZs6cySWXXALAO++8Q5s21Tk3dwCYmW0C3bp143vf+x677747Z511FhdffDF1dXWcffbZjB8/nq5du7JgwQK+8pWv8PLLL7Nq1Sp22203pk+fzssvv8z+++/Piy++yEUXXcTJJ59clTo7AMzMNpFnnnmGww47jHHjxtGuXTveeecdHnnkEfbcc0/mzp3LGWecwRFHHEHnzp1ZtmwZixcvZvr06UycOJF9992X6667rmoHf/AYgJnZJvHiiy9y9dVXc/LJJ9OxY0eOO+44hg8fzpw5c7jxxhu59957WbRoEdOmTWPx4sVcfvnl/OEPf2DAgAE888wzzJ07lwEDBlS1zm4BmJltAv369eO2227jtNNOA9JA7+zZsznyyCO57777aNOmDZI477zzOPHEE9l1112ZP38+d955J6NHj2bVqlWMGzeuqnV2C8DMbBN4/vnnGTNmDBdccAErVqygrq6Oq6++mtNOO41JkybRpk0bbr75Zs4880xOPvlkRo0axf7778/tt9/OPvvsw69+9Sv69etX1To7AMzMNoH+/fu/273Tp08fbrjh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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#看看各登录港口的获救情况\n",
    "fig = plt.figure(figsize=(8,4))\n",
    "Survived_0 = data_train.Embarked[data_train.Survived == 0].value_counts()\n",
    "Survived_1 = data_train.Embarked[data_train.Survived == 1].value_counts()\n",
    "df=pd.DataFrame({u'获救':Survived_1, u'未获救':Survived_0})\n",
    "df.plot(kind='bar', stacked=True)\n",
    "plt.title(u\"各登录港口乘客的获救情况\")\n",
    "plt.xlabel(u\"登录港口\") \n",
    "plt.ylabel(u\"人数\") \n",
    "\n",
    "plt.show()\n",
    "\n",
    "# 港口对于是否生还的影响不是很大"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 576x288 with 0 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#看看各性别的获救情况\n",
    "fig = plt.figure(figsize=(8,4))\n",
    "Survived_m = data_train.Survived[data_train.Sex == 'male'].value_counts()\n",
    "Survived_f = data_train.Survived[data_train.Sex == 'female'].value_counts()\n",
    "df=pd.DataFrame({u'男性':Survived_m, u'女性':Survived_f})\n",
    "df.plot(kind='bar', stacked=True)\n",
    "plt.title(u\"按性别看获救情况\")\n",
    "plt.xlabel(u\"性别\") \n",
    "plt.ylabel(u\"人数\")\n",
    "plt.show()\n",
    "\n",
    "# 获救的人群中，女性的占比明显高于男性"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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+C0wFngImN/NOvWB++67j8997nM0NTXxwAMPsPvuu3PJJZfQ1tZGW1sbgwYN4itf+QrXX389L7zwAv/6r//KokWLmD17Ng888ABHHnkkS5cuZebMmR2FvnTpUhYuXNgxcr/XXnuxzz77MGLEiI7nXbFiBaNHj+bSSy8FYPbs2dx9990ceOCBTJs2jaOPPrpjf0899RSvfvWrOx77+te/nsMOO4wVK1YwePBgTj/9dE4//XTmzp3LF77wBS644IK+6j41SF/U7YUXXsj48eNpampil112YfTo0QwatPpndOtWvXXyySevNrI2a9YsFi9ezLhx47jrrru47rrrPOaq36ln3Q7UY25PRoSnAh+OiNuBwcC15fKFwPuAG9ayTn1g3333ZdasWfzoRz9i//3359e//jW33HILEydO5LjjjuPWW2/lT3/6E9tvvz3bbrstBxxwAK2trdx8880ccMABXHfdddx5552rfdqbNm3aGiN0++23HxMnTlztb8yYMR33t7W1MXbsWE455RS++c1v8tJLL7F8+XL+93//lwcffJAjjjhitU9wW265JYsWLeKSSy7hueeKr4ve8IY3MG/ePL797W/XudfUaPWu22uvvXa1A/AFF1zAxIkTueeee5g4cSIHH3ww8+fPt27VKytXrmTy5Mmcc845TJo0iUMPPZRzzjmHyZMn09bWxh//+EePuep36lm3A/mYu84R4cxcDBzWeV1EjC/XnZ+ZS9a2Tn3ne9/7Hp/61Kc6lm+88UauuuoqAIYOHcp+++3HnDlzOPLIIxkzZsxqJyYtX768o7iXLFnC8uXL2X777TuWjzrqKAAeeeSRNZ73V7/6FdOnT2f//fdn4cKFbLnllrz+9a9n9uzZ3HDDDVx88cU888wzHHPMMQwaNIgvf/nL3H333bz88ss8/vjjXHTRRVx99dXMnj2b5557jr322otPfOITdesn9S/1qts99tiDk08+mXvvvRcoRkGOP/54jjnmGH7yk5/wqle9CoCdd97ZutV6++QnP8mTTz7Jiy++yN13383xxx/Piy++yJgxY5gwYQL33Xefx1z1O/Ws24F8zO3VL8uV4fjqda1T39lqq60477zz+P3vf88ee+zB6NGjOwr0gx/8IPPnzwdg1KhRzJo1i8MPP7yj2JuamrjxxhsB+MEPfsDkyZM79tvW1saIESO49tpr+fnPf95xxmZEcNRRR3HMMccQETz00EMcc8wxHHrooZx99tnssssuHHfccZx55pkcffTRHHjggQCceeaZ3HvvvZx44ok8/PDDHf84Jk+ezCOPPLLGp0pt3OpVt3vssQfPPvvsas+Vmey5557MnTuXAw44AMC61XpbsmQJU6ZMYfDgwQC0tLSwdOnSjp903XTTTfnFL37hMVf9Sr3rdiAfc63+jcTnP/95br31Vtra2njve9/LsmXLePLJJ7vd9vjjj2fGjBkdX3e0F/aCBQsYMmQIW221Vce2nS9O/Z3vfIcRI0YwYsQIzjvvvNW22XXXXZkzZw6nnXYaY8eO5YorruC8885j+fLlnHrqqR1fn7zwwgu86lWv4vLLL2fRokUd+5g7dy4nnXQSb3/722vaL+rf6lW3Xc2fP58TTzyRCRMmMH36dF566SWWLl1q3Wq9bbnllsycOZNZs2Yxffp09t57b+68805mzZrFrFmzePzxx9d4jMdcNVq967argXTM7dWIsLq3vpc7q5Vly5Zx3333cc0113ScWfzEE08wadIk3vrWt3LuueeSmR1/bW1tHZ8KgY75OD/84Q/59Kc/vdq+O38tsmzZMs466yyAjse33z979mxOO+00DjnkEB577DHGjx/PsGHDWLp0KYMGDeKPf/wjI0eOZO7cuey+++6cfPLJfP/73yciiAjGjBnDXXfdxZVXXsmVV17JscceW88uU2frebmzWqln3bbfn5ksWLCAyy67jEmTJvGWt7yFs846ix/84Ae88MILHHLIIdbtANbTy53VWlNTE0888QQnnngin/vc5zrWP/nkk+y0004AHnP1ii6e/FbG7DRi3RvWUD3rtv3+gXjMNQhvBM444wza2to46qijOP/884FiMvk73vEOrrrqKoYNG8ayZctYtmwZv/vd7zj55JM7LpVy9NFH09bWxsknn8zkyZMZPnz4avvufPHqmTNnrnbf5ZdfzmOPPcbmm2/OuHHjmDlzJosXL+aCCy5gv/3244gjjuCss87ijW98Ix/60If461//yoMPPsjb3vY2VqxYwVe/+lVaWlrYb7/9GD9+PFtvvTULFixg+vTpde4x9Qf1rFug47ETJkzgyCOP5Pbbb+faa6/lv/7rvzjllFO48MIL2WWXXaxbrZcnnniC4447jm222YYvfOELHHLIIQDMmjWLz372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\n",
      "text/plain": [
       "<Figure size 864x288 with 5 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#然后我们再来看看各种舱级别情况下各性别的获救情况\n",
    "fig=plt.figure(figsize=(12,4))\n",
    "\n",
    "plt.title(u\"根据舱等级和性别的获救情况\")\n",
    "plt.xticks([])\n",
    "plt.yticks([])\n",
    "\n",
    "ax1=fig.add_subplot(141)\n",
    "data_train.Survived[data_train.Sex == 'female'][data_train.Pclass != 3].value_counts().plot(kind='bar', label=\"female highclass\", color='#FA2479')\n",
    "ax1.set_xticklabels([u\"获救\", u\"未获救\"], rotation=0)\n",
    "ax1.legend([u\"女性/高级舱\"], loc='best')\n",
    "\n",
    "ax2=fig.add_subplot(142, sharey=ax1)\n",
    "data_train.Survived[data_train.Sex == 'female'][data_train.Pclass == 3].value_counts().plot(kind='bar', label='female, low class', color='pink')\n",
    "ax2.set_xticklabels([u\"未获救\", u\"获救\"], rotation=0)\n",
    "plt.legend([u\"女性/低级舱\"], loc='best')\n",
    "\n",
    "ax3=fig.add_subplot(143, sharey=ax1)\n",
    "data_train.Survived[data_train.Sex == 'male'][data_train.Pclass != 3].value_counts().plot(kind='bar', label='male, high class',color='lightblue')\n",
    "ax3.set_xticklabels([u\"未获救\", u\"获救\"], rotation=0)\n",
    "plt.legend([u\"男性/高级舱\"], loc='best')\n",
    "\n",
    "ax4=fig.add_subplot(144, sharey=ax1)\n",
    "data_train.Survived[data_train.Sex == 'male'][data_train.Pclass == 3].value_counts().plot(kind='bar', label='male low class', color='steelblue')\n",
    "ax4.set_xticklabels([u\"未获救\", u\"获救\"], rotation=0)\n",
    "plt.legend([u\"男性/低级舱\"], loc='best')\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 2.3\t特征工程"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- Age：填补缺失值\n",
    "- Sex：转数字\n",
    "- Cabin：先填充再转数字\n",
    "- Embarked：先填充再转数字\n",
    "- Pclass：转数字\n",
    "- passangerId: 去除\n",
    "- name：去除\n",
    "- Ticket：去除"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### （1）缺失值填充"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [],
   "source": [
    "## Age处理：\n",
    "# 用众数来填充\n",
    "fill_age = data_train[\"Age\"].median()\n",
    "data_train[\"Age\"].fillna(fill_age, inplace=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 891 entries, 0 to 890\n",
      "Data columns (total 12 columns):\n",
      " #   Column       Non-Null Count  Dtype  \n",
      "---  ------       --------------  -----  \n",
      " 0   PassengerId  891 non-null    int64  \n",
      " 1   Survived     891 non-null    int64  \n",
      " 2   Pclass       891 non-null    int64  \n",
      " 3   Name         891 non-null    object \n",
      " 4   Sex          891 non-null    object \n",
      " 5   Age          891 non-null    float64\n",
      " 6   SibSp        891 non-null    int64  \n",
      " 7   Parch        891 non-null    int64  \n",
      " 8   Ticket       891 non-null    object \n",
      " 9   Fare         891 non-null    float64\n",
      " 10  Cabin        204 non-null    object \n",
      " 11  Embarked     889 non-null    object \n",
      "dtypes: float64(2), int64(5), object(5)\n",
      "memory usage: 83.7+ KB\n"
     ]
    }
   ],
   "source": [
    "data_train.info()  # 检查age的填充情况\n",
    "# Age          891 non-null    float64"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 891 entries, 0 to 890\n",
      "Data columns (total 12 columns):\n",
      " #   Column       Non-Null Count  Dtype  \n",
      "---  ------       --------------  -----  \n",
      " 0   PassengerId  891 non-null    int64  \n",
      " 1   Survived     891 non-null    int64  \n",
      " 2   Pclass       891 non-null    int64  \n",
      " 3   Name         891 non-null    object \n",
      " 4   Sex          891 non-null    object \n",
      " 5   Age          891 non-null    float64\n",
      " 6   SibSp        891 non-null    int64  \n",
      " 7   Parch        891 non-null    int64  \n",
      " 8   Ticket       891 non-null    object \n",
      " 9   Fare         891 non-null    float64\n",
      " 10  Cabin        891 non-null    object \n",
      " 11  Embarked     889 non-null    object \n",
      "dtypes: float64(2), int64(5), object(5)\n",
      "memory usage: 83.7+ KB\n"
     ]
    }
   ],
   "source": [
    "# Cabin 填充，利用U（Unknown）填充缺失值\n",
    "data_train['Cabin'].fillna('U',inplace=True)\n",
    "data_train.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Embarked 填充，众数S\n",
    "data_train['Embarked'].fillna('S',inplace=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 891 entries, 0 to 890\n",
      "Data columns (total 12 columns):\n",
      " #   Column       Non-Null Count  Dtype  \n",
      "---  ------       --------------  -----  \n",
      " 0   PassengerId  891 non-null    int64  \n",
      " 1   Survived     891 non-null    int64  \n",
      " 2   Pclass       891 non-null    int64  \n",
      " 3   Name         891 non-null    object \n",
      " 4   Sex          891 non-null    object \n",
      " 5   Age          891 non-null    float64\n",
      " 6   SibSp        891 non-null    int64  \n",
      " 7   Parch        891 non-null    int64  \n",
      " 8   Ticket       891 non-null    object \n",
      " 9   Fare         891 non-null    float64\n",
      " 10  Cabin        891 non-null    object \n",
      " 11  Embarked     891 non-null    object \n",
      "dtypes: float64(2), int64(5), object(5)\n",
      "memory usage: 83.7+ KB\n"
     ]
    }
   ],
   "source": [
    "data_train.info()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### （2）字符串类变量处理"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "male      577\n",
       "female    314\n",
       "Name: Sex, dtype: int64"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 处理Sex\n",
    "data_train.Sex.value_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PassengerId</th>\n",
       "      <th>Survived</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Name</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Ticket</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Cabin</th>\n",
       "      <th>Embarked</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Braund, Mr. Owen Harris</td>\n",
       "      <td>0</td>\n",
       "      <td>22.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>A/5 21171</td>\n",
       "      <td>7.2500</td>\n",
       "      <td>U</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Cumings, Mrs. John Bradley (Florence Briggs Th...</td>\n",
       "      <td>1</td>\n",
       "      <td>38.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>PC 17599</td>\n",
       "      <td>71.2833</td>\n",
       "      <td>C85</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>Heikkinen, Miss. Laina</td>\n",
       "      <td>1</td>\n",
       "      <td>26.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>STON/O2. 3101282</td>\n",
       "      <td>7.9250</td>\n",
       "      <td>U</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Futrelle, Mrs. Jacques Heath (Lily May Peel)</td>\n",
       "      <td>1</td>\n",
       "      <td>35.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>113803</td>\n",
       "      <td>53.1000</td>\n",
       "      <td>C123</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Allen, Mr. William Henry</td>\n",
       "      <td>0</td>\n",
       "      <td>35.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>373450</td>\n",
       "      <td>8.0500</td>\n",
       "      <td>U</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>6</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Moran, Mr. James</td>\n",
       "      <td>0</td>\n",
       "      <td>28.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>330877</td>\n",
       "      <td>8.4583</td>\n",
       "      <td>U</td>\n",
       "      <td>Q</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>7</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>McCarthy, Mr. Timothy J</td>\n",
       "      <td>0</td>\n",
       "      <td>54.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>17463</td>\n",
       "      <td>51.8625</td>\n",
       "      <td>E46</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>8</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Palsson, Master. Gosta Leonard</td>\n",
       "      <td>0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>349909</td>\n",
       "      <td>21.0750</td>\n",
       "      <td>U</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>9</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>Johnson, Mrs. Oscar W (Elisabeth Vilhelmina Berg)</td>\n",
       "      <td>1</td>\n",
       "      <td>27.0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>347742</td>\n",
       "      <td>11.1333</td>\n",
       "      <td>U</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>10</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>Nasser, Mrs. Nicholas (Adele Achem)</td>\n",
       "      <td>1</td>\n",
       "      <td>14.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>237736</td>\n",
       "      <td>30.0708</td>\n",
       "      <td>U</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   PassengerId  Survived  Pclass  \\\n",
       "0            1         0       3   \n",
       "1            2         1       1   \n",
       "2            3         1       3   \n",
       "3            4         1       1   \n",
       "4            5         0       3   \n",
       "5            6         0       3   \n",
       "6            7         0       1   \n",
       "7            8         0       3   \n",
       "8            9         1       3   \n",
       "9           10         1       2   \n",
       "\n",
       "                                                Name  Sex   Age  SibSp  Parch  \\\n",
       "0                            Braund, Mr. Owen Harris    0  22.0      1      0   \n",
       "1  Cumings, Mrs. John Bradley (Florence Briggs Th...    1  38.0      1      0   \n",
       "2                             Heikkinen, Miss. Laina    1  26.0      0      0   \n",
       "3       Futrelle, Mrs. Jacques Heath (Lily May Peel)    1  35.0      1      0   \n",
       "4                           Allen, Mr. William Henry    0  35.0      0      0   \n",
       "5                                   Moran, Mr. James    0  28.0      0      0   \n",
       "6                            McCarthy, Mr. Timothy J    0  54.0      0      0   \n",
       "7                     Palsson, Master. Gosta Leonard    0   2.0      3      1   \n",
       "8  Johnson, Mrs. Oscar W (Elisabeth Vilhelmina Berg)    1  27.0      0      2   \n",
       "9                Nasser, Mrs. Nicholas (Adele Achem)    1  14.0      1      0   \n",
       "\n",
       "             Ticket     Fare Cabin Embarked  \n",
       "0         A/5 21171   7.2500     U        S  \n",
       "1          PC 17599  71.2833   C85        C  \n",
       "2  STON/O2. 3101282   7.9250     U        S  \n",
       "3            113803  53.1000  C123        S  \n",
       "4            373450   8.0500     U        S  \n",
       "5            330877   8.4583     U        Q  \n",
       "6             17463  51.8625   E46        S  \n",
       "7            349909  21.0750     U        S  \n",
       "8            347742  11.1333     U        S  \n",
       "9            237736  30.0708     U        C  "
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 性别：\n",
    "sex_mapping = {\"male\": 0, \"female\":1}\n",
    "data_train['Sex'] = data_train['Sex'].map(sex_mapping)\n",
    "data_train.head(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "U    687\n",
       "C     59\n",
       "B     47\n",
       "D     33\n",
       "E     32\n",
       "A     15\n",
       "F     13\n",
       "G      4\n",
       "T      1\n",
       "Name: Cabin_1st, dtype: int64"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Cabin 只取第一位：\n",
    "data_train['Cabin_1st'] = data_train['Cabin'].str[:1]\n",
    "data_train['Cabin_1st'].value_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PassengerId</th>\n",
       "      <th>Survived</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Name</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Ticket</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Cabin</th>\n",
       "      <th>Embarked</th>\n",
       "      <th>Cabin_1st</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Braund, Mr. Owen Harris</td>\n",
       "      <td>0</td>\n",
       "      <td>22.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>A/5 21171</td>\n",
       "      <td>7.2500</td>\n",
       "      <td>U</td>\n",
       "      <td>S</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Cumings, Mrs. John Bradley (Florence Briggs Th...</td>\n",
       "      <td>1</td>\n",
       "      <td>38.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>PC 17599</td>\n",
       "      <td>71.2833</td>\n",
       "      <td>C85</td>\n",
       "      <td>C</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>Heikkinen, Miss. Laina</td>\n",
       "      <td>1</td>\n",
       "      <td>26.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>STON/O2. 3101282</td>\n",
       "      <td>7.9250</td>\n",
       "      <td>U</td>\n",
       "      <td>S</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Futrelle, Mrs. Jacques Heath (Lily May Peel)</td>\n",
       "      <td>1</td>\n",
       "      <td>35.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>113803</td>\n",
       "      <td>53.1000</td>\n",
       "      <td>C123</td>\n",
       "      <td>S</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Allen, Mr. William Henry</td>\n",
       "      <td>0</td>\n",
       "      <td>35.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>373450</td>\n",
       "      <td>8.0500</td>\n",
       "      <td>U</td>\n",
       "      <td>S</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   PassengerId  Survived  Pclass  \\\n",
       "0            1         0       3   \n",
       "1            2         1       1   \n",
       "2            3         1       3   \n",
       "3            4         1       1   \n",
       "4            5         0       3   \n",
       "\n",
       "                                                Name  Sex   Age  SibSp  Parch  \\\n",
       "0                            Braund, Mr. Owen Harris    0  22.0      1      0   \n",
       "1  Cumings, Mrs. John Bradley (Florence Briggs Th...    1  38.0      1      0   \n",
       "2                             Heikkinen, Miss. Laina    1  26.0      0      0   \n",
       "3       Futrelle, Mrs. Jacques Heath (Lily May Peel)    1  35.0      1      0   \n",
       "4                           Allen, Mr. William Henry    0  35.0      0      0   \n",
       "\n",
       "             Ticket     Fare Cabin Embarked  Cabin_1st  \n",
       "0         A/5 21171   7.2500     U        S          9  \n",
       "1          PC 17599  71.2833   C85        C          3  \n",
       "2  STON/O2. 3101282   7.9250     U        S          9  \n",
       "3            113803  53.1000  C123        S          3  \n",
       "4            373450   8.0500     U        S          9  "
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cabin_mapping = {\"A\": 1, \"B\": 2, \"C\": 3,\"D\": 4, \"E\": 5, \"F\": 6,\"G\": 7, \"T\": 8, \"U\": 9,}\n",
    "data_train['Cabin_1st'] = data_train['Cabin_1st'].map(cabin_mapping)\n",
    "data_train.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PassengerId</th>\n",
       "      <th>Survived</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Name</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Ticket</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Cabin</th>\n",
       "      <th>Embarked</th>\n",
       "      <th>Cabin_1st</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Braund, Mr. Owen Harris</td>\n",
       "      <td>0</td>\n",
       "      <td>22.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>A/5 21171</td>\n",
       "      <td>7.2500</td>\n",
       "      <td>U</td>\n",
       "      <td>0</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Cumings, Mrs. John Bradley (Florence Briggs Th...</td>\n",
       "      <td>1</td>\n",
       "      <td>38.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>PC 17599</td>\n",
       "      <td>71.2833</td>\n",
       "      <td>C85</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>Heikkinen, Miss. Laina</td>\n",
       "      <td>1</td>\n",
       "      <td>26.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>STON/O2. 3101282</td>\n",
       "      <td>7.9250</td>\n",
       "      <td>U</td>\n",
       "      <td>0</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Futrelle, Mrs. Jacques Heath (Lily May Peel)</td>\n",
       "      <td>1</td>\n",
       "      <td>35.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>113803</td>\n",
       "      <td>53.1000</td>\n",
       "      <td>C123</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Allen, Mr. William Henry</td>\n",
       "      <td>0</td>\n",
       "      <td>35.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>373450</td>\n",
       "      <td>8.0500</td>\n",
       "      <td>U</td>\n",
       "      <td>0</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   PassengerId  Survived  Pclass  \\\n",
       "0            1         0       3   \n",
       "1            2         1       1   \n",
       "2            3         1       3   \n",
       "3            4         1       1   \n",
       "4            5         0       3   \n",
       "\n",
       "                                                Name  Sex   Age  SibSp  Parch  \\\n",
       "0                            Braund, Mr. Owen Harris    0  22.0      1      0   \n",
       "1  Cumings, Mrs. John Bradley (Florence Briggs Th...    1  38.0      1      0   \n",
       "2                             Heikkinen, Miss. Laina    1  26.0      0      0   \n",
       "3       Futrelle, Mrs. Jacques Heath (Lily May Peel)    1  35.0      1      0   \n",
       "4                           Allen, Mr. William Henry    0  35.0      0      0   \n",
       "\n",
       "             Ticket     Fare Cabin  Embarked  Cabin_1st  \n",
       "0         A/5 21171   7.2500     U         0          9  \n",
       "1          PC 17599  71.2833   C85         1          3  \n",
       "2  STON/O2. 3101282   7.9250     U         0          9  \n",
       "3            113803  53.1000  C123         0          3  \n",
       "4            373450   8.0500     U         0          9  "
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Embarked\n",
    "embarked_mapping = {\"S\": 0, \"C\": 1, \"Q\": 2}\n",
    "data_train['Embarked'] = data_train['Embarked'].map(embarked_mapping)\n",
    "data_train.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 891 entries, 0 to 890\n",
      "Data columns (total 13 columns):\n",
      " #   Column       Non-Null Count  Dtype  \n",
      "---  ------       --------------  -----  \n",
      " 0   PassengerId  891 non-null    int64  \n",
      " 1   Survived     891 non-null    int64  \n",
      " 2   Pclass       891 non-null    int64  \n",
      " 3   Name         891 non-null    object \n",
      " 4   Sex          891 non-null    int64  \n",
      " 5   Age          891 non-null    float64\n",
      " 6   SibSp        891 non-null    int64  \n",
      " 7   Parch        891 non-null    int64  \n",
      " 8   Ticket       891 non-null    object \n",
      " 9   Fare         891 non-null    float64\n",
      " 10  Cabin        891 non-null    object \n",
      " 11  Embarked     891 non-null    int64  \n",
      " 12  Cabin_1st    891 non-null    int64  \n",
      "dtypes: float64(2), int64(8), object(3)\n",
      "memory usage: 90.6+ KB\n"
     ]
    }
   ],
   "source": [
    "# 最后再看一下数据的dtype\n",
    "data_train.info()\n",
    "# 1. 确认已填充\n",
    "# 2. 确认进入的模型的特征都是int或者float"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### （3）生成特征X和标签Y"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Embarked</th>\n",
       "      <th>Cabin_1st</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>22.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>7.2500</td>\n",
       "      <td>0</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>38.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>71.2833</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>26.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>7.9250</td>\n",
       "      <td>0</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>35.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>53.1000</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>35.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>8.0500</td>\n",
       "      <td>0</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Pclass  Sex   Age  SibSp  Parch     Fare  Embarked  Cabin_1st\n",
       "0       3    0  22.0      1      0   7.2500         0          9\n",
       "1       1    1  38.0      1      0  71.2833         1          3\n",
       "2       3    1  26.0      0      0   7.9250         0          9\n",
       "3       1    1  35.0      1      0  53.1000         0          3\n",
       "4       3    0  35.0      0      0   8.0500         0          9"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x_need_to_drop = ['Survived','PassengerId','Name', 'Ticket', 'Cabin']\n",
    "x = data_train.drop(x_need_to_drop, axis = 1)\n",
    "y = data_train['Survived']\n",
    "x.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0    0\n",
       "1    1\n",
       "2    1\n",
       "3    1\n",
       "4    0\n",
       "Name: Survived, dtype: int64"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "((891, 8), (891,))"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 再构建模型之前，最后再确认一下数据的规格\n",
    "x.shape, y.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### （4）拆分训练集和验证集"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "((712, 8), (179, 8), (712,), (179,))"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.model_selection import train_test_split \n",
    "\n",
    "x_train, x_val, y_train, y_val = train_test_split(x, y, test_size=0.2, random_state=0)\n",
    "\n",
    "x_train.shape, x_val.shape, y_train.shape, y_val.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 拆分后，80%的数据用作train，剩下20%的数据，用作valid"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 2.4\t数据建模与评价\t"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 导入Sklearn的算法包： 逻辑回归、SVM、决策树、集成方法随机森林\n",
    "from sklearn.linear_model import LogisticRegression\n",
    "from sklearn.svm import SVC\n",
    "from sklearn.tree import DecisionTreeClassifier\n",
    "from sklearn.ensemble import RandomForestClassifier\n",
    "\n",
    "# 导入评价指标：分类报告，精度\n",
    "from sklearn.metrics import classification_report, accuracy_score "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### （1）逻辑回归"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "              precision    recall  f1-score   support\n",
      "\n",
      "           0       0.86      0.85      0.85       110\n",
      "           1       0.76      0.78      0.77        69\n",
      "\n",
      "    accuracy                           0.82       179\n",
      "   macro avg       0.81      0.81      0.81       179\n",
      "weighted avg       0.82      0.82      0.82       179\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\Programs\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\_logistic.py:762: ConvergenceWarning: lbfgs failed to converge (status=1):\n",
      "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n",
      "\n",
      "Increase the number of iterations (max_iter) or scale the data as shown in:\n",
      "    https://scikit-learn.org/stable/modules/preprocessing.html\n",
      "Please also refer to the documentation for alternative solver options:\n",
      "    https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n",
      "  n_iter_i = _check_optimize_result(\n"
     ]
    }
   ],
   "source": [
    "logreg_clf = LogisticRegression()  # 1、模型初始化\n",
    "logreg_clf.fit(x_train, y_train)    # 2. 训练\n",
    "pred_logreg = logreg_clf.predict(x_val)   # 3. 预测\n",
    "print(classification_report(y_val, pred_logreg))   # 4. 查看评价指标\n",
    " \n",
    "# 逻辑回归分类的F1值是：0.81 "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### （2）SVM"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "              precision    recall  f1-score   support\n",
      "\n",
      "           0       0.69      0.95      0.80       110\n",
      "           1       0.79      0.33      0.47        69\n",
      "\n",
      "    accuracy                           0.71       179\n",
      "   macro avg       0.74      0.64      0.63       179\n",
      "weighted avg       0.73      0.71      0.67       179\n",
      "\n"
     ]
    }
   ],
   "source": [
    "svc_clf = SVC() \n",
    "svc_clf.fit(x_train, y_train)\n",
    "pred_svc = svc_clf.predict(x_val)\n",
    "\n",
    "print(classification_report(y_val, pred_svc))\n",
    "\n",
    "# SVM的f1值，只有0.67"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### （3）决策树"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "              precision    recall  f1-score   support\n",
      "\n",
      "           0       0.82      0.85      0.83       110\n",
      "           1       0.74      0.71      0.73        69\n",
      "\n",
      "    accuracy                           0.79       179\n",
      "   macro avg       0.78      0.78      0.78       179\n",
      "weighted avg       0.79      0.79      0.79       179\n",
      "\n"
     ]
    }
   ],
   "source": [
    "dt_clf = DecisionTreeClassifier()\n",
    "dt_clf.fit(x_train, y_train)\n",
    "pred_dt = dt_clf.predict(x_val)\n",
    "\n",
    "print(classification_report(y_val, pred_dt))\n",
    "\n",
    "# 决策树的f1值：0.79"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### （4）随机森林：bagging集成方法，决策树的集合"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "              precision    recall  f1-score   support\n",
      "\n",
      "           0       0.83      0.90      0.86       110\n",
      "           1       0.82      0.71      0.76        69\n",
      "\n",
      "    accuracy                           0.83       179\n",
      "   macro avg       0.82      0.81      0.81       179\n",
      "weighted avg       0.83      0.83      0.82       179\n",
      "\n"
     ]
    }
   ],
   "source": [
    "rf_clf = RandomForestClassifier()\n",
    "rf_clf.fit(x_train, y_train)\n",
    "pred_rf = rf_clf.predict(x_val)\n",
    "\n",
    "print(classification_report(y_val, pred_rf))\n",
    "\n",
    "# 随机森林的f1值：0.82"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 2.5\t模型可视化"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['Pclass' 'Sex' 'Age' 'SibSp' 'Parch' 'Fare' 'Embarked' 'Cabin_1st'] [0.07407811 0.25429766 0.24365511 0.04776599 0.03798657 0.24194244\n",
      " 0.03870518 0.06156895]\n"
     ]
    }
   ],
   "source": [
    "# 以随机森林为例\n",
    "bar_x = x_train.columns.values  # 取特征的名称\n",
    "bar_y = rf_clf.feature_importances_  # 取随机森林的模型的输出：特征重要程度\n",
    "print(bar_x, bar_y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1.0, '随机森林模型特征的重要程度')"
      ]
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 640x400 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(8,5),dpi = 80)\n",
    "plt.barh(bar_x,rf_clf.feature_importances_)  # 水平柱状图\n",
    "plt.xlabel('重要度')\n",
    "plt.title('随机森林模型特征的重要程度')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 2.6\t建模结论"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- 从重要度的图里面，可以看出：性别、年龄、票价是是否能够获救的最重要的三个因素。  \n",
    "- 登船口，直系亲友数量、旁系亲友数量，这三个特征是对于是否获救最不明显的特征。\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.3"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": false,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {
    "height": "calc(100% - 180px)",
    "left": "10px",
    "top": "150px",
    "width": "165px"
   },
   "toc_section_display": true,
   "toc_window_display": true
  },
  "varInspector": {
   "cols": {
    "lenName": 16,
    "lenType": 16,
    "lenVar": 40
   },
   "kernels_config": {
    "python": {
     "delete_cmd_postfix": "",
     "delete_cmd_prefix": "del ",
     "library": "var_list.py",
     "varRefreshCmd": "print(var_dic_list())"
    },
    "r": {
     "delete_cmd_postfix": ") ",
     "delete_cmd_prefix": "rm(",
     "library": "var_list.r",
     "varRefreshCmd": "cat(var_dic_list()) "
    }
   },
   "types_to_exclude": [
    "module",
    "function",
    "builtin_function_or_method",
    "instance",
    "_Feature"
   ],
   "window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
